package com.dmwork.service.customer.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dmwork.service.customer.entity.Customer;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dmwork.service.customer.entity.returnVo.CustomerBriefInfoListVo;
import com.dmwork.service.customer.entity.vo.*;

import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author 李天
 * @since 2021-03-10
 */
public interface CustomerService extends IService<Customer> {

    /**
     * 注册功能
     * @param registerVo
     */
    void register(RegisterVo registerVo);

    /**
     * 登录功能
     * @param loginVo
     * @return 返回token字符串
     */
    String login(LoginVo loginVo);

    /**
     * 查询粉丝用户列表
     * @param id 登录用户id
     * @param followGroupId 关注分组id
     * @param page 页数
     * @param limit 每页记录数
     * @return 关注用户信息列表
     */
    CustomerBriefInfoListVo selectFollowList(String id, String followGroupId, Integer page, Integer limit);

    /**
     * 查询粉丝用户列表
     * @param id 登录用户id
     * @param page 页数
     * @param limit 每页记录数
     * @return 粉丝用户信息列表
     */
    CustomerBriefInfoListVo selectFansList(String id, Integer page, Integer limit);


    /**
     * 查找指定用户
     * @param customerId
     * @return
     */
    CustomerDetailInfoVo getDetailInfoById(String customerId);

    List<Customer> getCustomerList(Integer page, Integer limit);

    /**
     * 获取个人基本信息
     * @param customerId 个人用户id
      * @return
     */
    BaseInfoVo getBaseInfoVoById(String customerId);

    /**
     * 检查新更新的用户信息是否有重复
     * @param customer
     * @return
     */
    boolean checkDupicateInfo(Customer customer);


    /**
     * 根据指定条件查询用户信息列表
     * @param page 页数
     * @param limit 每页记录数
     * @param customerAdminQueryVo 查询条件
     * @return 用户列表分页
     */
    Page<Customer> getCustomerPage(Integer page, Integer limit, CustomerAdminQueryVo customerAdminQueryVo);

    /**
     * 管理员级别：获取用户基本信息
     * @param customerId 用户id
     * @return 用户基本信息
     */
    CustomerAdminDetailInfoVo getCustomerAdminDetailInfoById(String customerId);

    /**
     * 获取默认的用户空间背景图片url
     * @return
     */
    String getSpaceDefaultBackgroundUrl();
}
